english   italiano   español
 
4 June 2012

Video Streaming: Como Criar Um Controlo Remoto Para Videostreaming Box Portátil - A História Do RobinPad


Video Streaming: Como Criar Um Controlo Remoto Para Videostreaming Box Portátil - A História Do RobinPad

No inicío de 2007 tomei a minha iniciação pessoal com o streaming de vídeo em tempo real e a audiência italiana que seguiu os meus relatos contínuos de vários dos maiores barcamps recentemente realizados em Itália, testemunhou o ânimo e o entusiasmo com que levei este novo desafio comunicativo.

Robin-Pad-console-IMG_0051.JPG

Uma das melhores coisas a acontecer graças à minha experimentação voluntária com o streaming de vídeo em tempo real na www.RobinGood.TV, foi a oportunidade de conhecer algumas pessoas fantásticas que, excitadas pelas minhas descobertas de vídeo ofereceram de muitas formas diferentes o seu talento e habilidades para me ajudarem.


De entre estas pessoas uma delas conseguiu passar o teste do tempo e investiu um notável esforço e tempo para me ajudar em vários sonhos com os quais vinha testando. Estes incluem a capacidade de criar uma estação de vídeo realmente portátil, para além de periféricos e funcionalidades acrescidas que me teriam ajudado com o streaming de vídeo com mão livres em qualquer lugar, Justin-style.

O seu nome é Fabio "Blaxwan" e é um inventor e experimentador de tecnologia verdadeiramente apaixonado e impelido pelo desejo de trabalhar e aprender com as suas criações. Ele não só me ajudou a criar uma mala aberta para o meu portátil, o que torna muito mais fácil e mais confortável o meu streaming de vídeo do que andar como um tolo com o portátil aberto, mas e como conta em detalhe neste artigo, ele criou um painel de controlo remoto que integra funções de gestão e controlo para o portátil a trabalhar com a sua tampa fechada nas minhas costas.

Eis os detalhes:

Intro por Robin Good

 

A história do "RobinPad"


por Fabio "Blaxwan" Di Niro




1. Visão Geral


Em Abril último (2007) estava a assistir a um barcamp, e foi durante uma conferência que conheci o Robin Good.

Vi um homenzinho atrapalhado com um portátil, uma webcam, microfone e muitos fios enquanto tentava fazer a transmissão de vídeo em tempo real do OpenCamp. Esta visão teve dois efeitos: o primeiro foi que comecei a pensar imediatamente sobre formas de construir algo que evitasse todos os fios e complicações aborrecidas e desconfortáveis.

O segundo foi ter perdido o discurso da conferência.

Mais tarde, fui para casa e pesquisei na Net mais informações sobre este tal Good. Descobri rapidamente que ele estava a fazer um excelente trabalho ao dar a oportunidade a quem não pudesse assistir ao barcamp de o poder assistir ao vivo a partir dos seus computadores ligados a banda larga em casa.

Então pensei que o podia ter ajudado.

Enviei-lhe um e-mail e explicar o que achava que podiamos fazer e ele respondeu simplesmente "Olá Fabio, és o homem por quem eu esperava há muito tempo" então começámos a divertir-nos bastante experimentando novos e improváveis dispositivos mash-up.



Este artigo descreve a construção e evolução do chamado "RobinPad", pelo menos é como o chamamos. É de facto muito mais do que uma mesa de controlo, pois é um painel de controlo totalmente remoto que complementa a mochila de streaming de vídeo móvel do Robin Good, permitindo-lhe ter feedback vídeo e a possibilidade de gerir e controlar todas as funções de streaming de vídeo enquanto transmite.

Este dispositivo único, feito à mão foi o primeiro produto tangível criado através da minha colaboração activa com o Robin. Ele é uma excelente pessoa que faz muito mais do que apenas falar. Gosto disso. E passei um bom bocado ao criar este dispositivo tosco, mas funcional para a sua Robin Good TV.





2. Criar um painel de botões USB personalizado

Quando pensámos pela primeira vez sobre um painel de controlo remoto para a mochila de streaming do Robin Good, estávamos a tentar conseguir pelo menos algumas funcionalidades básicas:

  • ter uma antevisão da câmara

  • ter algumas informações sobre o sistema, como o estado da ligação, largura de banda disponível, estado da bateria, etc.

  • ter a possibilidade de iniciar e parar a transmissão de vídeo quando quisesse

Para conseguir estes objectivos precisávamos de um monitor LCD portátil leve e alguns botões de controlo. Vimos on-line que existiam muitos monitores sob muitas formas, logo isto não era um problema. Por outro lado, tínhamos que encontrar um dispositivo de entrada que tinha que caber num painel de controlo ao lado do monitor.

Inicialmente pensámos utilizar um teclado numérico USB, mas descobrimos que eram demasiado grandes. Voltámo-nos então para placas I/O personalizadas (como uma PIC que comunica através de R-232), mas este tipo de comunicação iria precisar de desenvolvimento de mais software. Pensei então em comprar um pequeno comando e apenas adaptá-lo às nossas necessidades específicas.

RobinPad01-250.jpg
Imagem: o pequeno comando que utilizámos

Assim, nas primeiras vezes, Robin e eu transmitíamos ao vivo com este comando preso ao cinto das nossas calças. Descobrimos rapidamente que isto não era assim tão confortável. Por outro lado, descobrimos rapidamente que existia muito software a partir do qual poderíamos, de várias maneiras, tirar partido do nosso comando normal. Foi assim que decidi retirar e utilizar apenas a parte electrónica do comando para o converter numa pequena caixa que pudesse corresponder mais facilmente e ser instalada ao lado do pequeno monitor LCD.

Cuidadosamente desapertei e abri o comando para ver como o poderia incluir numa caixa mais pequena. É claro que estas instruções não podem ser aplicadas a todos os comandos, pois os circuitos e tecnologias podem variar entre marcas e também entre modelos diferentes. Assim o que aqui escrevo serve apenas para dar uma boa ideia de como o fiz.

RobinPad02-350.jpg
Figura: inspecção dos circuitos do comando

Após abrir o comando, reparei imediatamente que a parte electrónica da unidade era composta por três circuitos: um principal que continha o chip central, um com cabos e o terceiro (o maior) que continha todos os contactos dos botões. Decidi então livrar-me do terceiro, poupando algum espaço, e substituí-lo por um circuito personalizado que tivesse os meus próprios botões.

Assim medi os circuitos restantes para determinar o tamanho da caixa de plástico a comprar.

RobinPad03-250.jpg
Figura: medindo os circuitos

Após alguma pesquisa, encontrei esta caixa de plástico da imagem em baixo, que era um pouco mais pequena do que o circuito que tinha que conter, mas pensei que era melhor cortá-lo um pouco ao invés de utilizar uma caixa maior (o tamanho acima era pouco prático). Com a caixa comprei também dez botões para soldar.

RobinPad04-300.jpg
Figura: a caixa de plástico e os botões

Nesta altura eu tinha que preparar a placa onde instalar os nossos botões personalizados. Já que não existiam necessidades específicas para ligações de circuitos, decidi utilizar uma placa de protótipo e ligá-la directamente ao circuito do comando. Coloquei os botões na placa de protótipo e decidi o seu tamanho e cortei-a então com o Dremel e soldei os botões.

RobinPad05-300.jpg
Figura: preparação da placa dos botões

A seguir precisava de preparar e acabar a caixa. Para isso, colei um pouco de fita-cola de papel para facilitar o desenho dos pontos para furar. Furei então os buracos para os botões e utilizei cola quente para colar um pouco de madeira dentro da caixa entre as duas filas de botões. É apenas cosmético. Na realidade este pedaço de madeira é utilizado para apertar e segurar o circuito para não ter que utilizar parafusos no painel frontal.

RobinPad06-200.jpg
Figura: preparação da caixa

Agora tinha que terminar o circuito do comando O primeiro passo foi remover o circuito não utilizado e cortar o utilizado (tinha apenas que cortar os limites à placa onde os dois motores estavam soldados, pois felizmente eram partes inúteis).

RobinPad07-200.jpg
Figura: a preparação do circuito do comando

Soldei uma base comum para alguns botões, agrupando-os enquanto via a placa dos botões do comando original. Utilizei então alguns fios coloridos para ligar o circuito personalizado à placa principal do comando.

RobinPad08-200.jpg
Figura: soldando os fios no circuito dos botões

Finalmente, o último passo era ligar o meu circuito de botões personalizado ao do comando.

RobinPad09-200.jpg
Figura: ligando os dois circuitos

Tenha presente que o comando que comprámos foi concebido para ligar a uma Playstation e a um PC, por isso também tinha um conector para Playstation. Já que este conector adicional não me agradava, o último passo foi abrir o conector, cortar-lhe os fios e isolá-los com fita cola, para que o comando não tivesse apenas um conector na ponta.

RobinPad10-250.jpg
Figura: cortando o comando Playstation

Aqui está com uma imagem do circuito dos botões, após a sua conclusão.

RobinPad11-350.jpg
Figura: COMPLETO!





3. Criar um painel de controlo remoto ajustável com um braço de suspensão


RobinPad-holding-arm-IMG_0045.JPG

Aqui o nosso objectivo era criar um dispositivo que ajudasse a transportar e ver o painel de controlo remoto com as mãos livres. A ideia era ter o painel de controlo visível pelo Robin enquanto tivesse em movimento e a transmitir ao vivo. Pensámos em várias soluções diferentes, como por exemplo algo para segurar ao cinto das calças ou à fivela da mochila, mas finalmente optámos por um braço flexível que saía da própria mochila ( mais tarde compreendemos que isto também era desconfortável).

Com este tipo de solução, o primeiro passo foi criar uma base de suporte que tinha que segurar o painel de botões e o monitor ao mesmo nível em frente do Robin.

Decidi criar esta peça utilizando um pouco de plástico e utilizando um tubo em PVC, como os utilizados nos esgotos. Felizmente tinha um novo, cortei-o e meti-o no forno a uma temperatura de cerca de 130 graus. passados 8 a 10 minutos estava de tal forma macio que pude tirá-lo facilmente e segurá-lo com firmeza utilizando duas placas de madeira. Preparei então a base para dobrar devidamente a folha de PVC para lhe dar a forma correcta para segurar o painel de botões e o monitor.

RobinPad12-200.jpg
Figura: a base de dobra

RobinPad13-250.jpg
Figura: o circuito de botões e monitor colocados na base de dobra

Nessa altura cortei um pedaço rectangular da folha de PVC um pouco maior do que o necessário (pois sabia que não conseguiria ser tão preciso quando o dobrasse) e coloquei-o outra vez no forno entre cinco a oito minutos a 130 graus. Quando o PVC estava outra vez mole, peguei nele e coloquei-o na base pressionando-o com força com outros objectos pesados com faces lisas por poucos minutos, até que arrefecesse de novo.

RobinPad14-200.jpg
Figura: dobrando o rectângulo de PVC

Alguns minutos depois, a peça de PVC estava suficientemente fria para poder continuar a trabalhar nela.

RobinPad15-250.jpg
Figura: o PVC devidamente dobrado

Coloquei então o monitor e o painel de botões na peça e comecei por desenhar e recortar precisamente os contornos.

RobinPad16-200.jpg
Figura: o PVC tem agora a forma correcta

RobinPad17-350.jpg
Figura: a placa agora segura perfeitamente o monitor e circuito de botões alinhados

Para criar alguma rigidez no braço flexível que iria suportar o painel de controlo remoto (senão o peso de monitor e painel de controlo faria com que ele caísse) decidi usar alguns fios de aço. Juntei alguns fios de aço, dei-lhes forma e colei-os no fundo da base. Meti então esta confusão de fios num tubo de plástico e, na outra ponta, dobrei os fios e colei-os num tubo maior que facilmente pode ser apertado a algo que tinha que prender na mochila.

RobinPad18-200.jpg
Figura: criando o braço flexível

O último passo foi preparar algo que seguraria o braço flexível pois não o podiamos aparafusar à nossa barriga. Precisávamos então de algo onde pudéssemos aparafusar o nosso braço artificial.

Para isso cortei um fino pedaço de madeira do tamanho de um portátil Vaio que o Robin transporta na mochila aberta. A minha ideia era basicamente a de colocar esta plataforma de madeira entre o Vaio e as costas do Robin dentro da mochila.

RobinPad19-200.jpg
Figura: preparando o suporte do braço flexível

Bem feito! O dispositivo de painel de controlo remoto "suspenso" ( claro que a fita elástica era uma solução temporária, foram substituídas por fita de velcro):

RobinPad20-300.jpg
Figura: a consola terminada





4. Primeira evolução: criando a mala para mochila


Robinpad-backpack-IMG_0029.JPG

Após algumas experiências com a estação de transmissão móvel do Robin, compreendemos que queríamos melhorar ainda mais algumas coisas.

A quantidade de dispositivos, pilhas, periféricos, cabos e conectores tinha aumentado tanto, principalmente após a adopção da pequena câmara que o Robin transportava no seu chapéu, que precisávamos urgentemente de fazer algo para simplificar e organizar todas estas coisas de uma forma melhor.

A nova câmara mais pequena no chapéu do Robin tinha de facto apenas uma ligação de vídeo composto, por isso fomos obrigados a adicionar um conversor de vídeo para USB. Além disso, nesta altura o Robin tinha escolhido um portátil Vaio mais pequeno, com melhor desempenho e com maior duração, mas o novo rebento, infelizmente não tinha saída de vídeo composto (que precisávamos urgentemente para alimentar o pequeno monitor portátil). Também aqui fomos obrigados a adicionar um conversor de VGA para vídeo composto. Eram demasiadas coisas na mochila do Robin.

Foi por isso que decidimos que a melhor solução seria colocar todas estas coisas dentro de uma caixa compacta devidamente concebida para colocar ou tirar da mochila aberta. Desta forma poderia integrar todos os cabos e simplificar o uso e aspecto do sistema.

Já que eu gostava de ter uma boa forma para esta caixa, afastei-me das caixas rectangulares tradicionais e fui directamente a uma loja de bricolage para ter algumas ideias novas. Ali, nas prateleiras onde todos os tubos eléctricos são mostrados, encontrei imediatamente algo interessante. Comprei os dois protectores de plástico que vê em baixo. Estes estranhos protectores são geralmente utilizados para dobrar os tubos quadrados que são utilizados para transportar cabos pelas paredes. Não sei se está a ver realmente para que servem, mas o que interessa é que eram ideais para o nosso projecto.

RobinPad21-300.jpg
Figura: os protectores de plástico que comprei para a caixa da mochila

Em casa, redimensionei os dois protectores e cortei uma forma correspondente numa folha fina de madeira para lhes criar um painel de fecho. Pintei então de preto tanto a base como os "protectores".

RobinPad22-200.jpg
Figura: os dois protectores de plástico cortados, colados e pintados de preto

Após ter a caixa completa, comecei a fazer alguns buracos para aparafusar os conectores e interruptores. Montei então todos os circuitos e tudo o restante. Finalmente utilizei elásticos para segurar o conjunto de pilhas do conversor à base da caixa.

Aqui estão os resultados:

RobinPad23-300.jpg
Figura: terminando a caixa

RobinPad24-300.jpg
Figura: testando a nova caixa, de lado consegue ver o braço flexível





5. Criando um sinal luminoso da Robin Good TV


Robin-Good-sign-2-IMG_0020.JPG

Nesta altura pensávamos que tínhamos uma ferramenta interessante nas nossas mãos e o nosso desejo era partilhar e publicitar o fruto do nosso trabalho para que as pessoas reparassem no Robin quando ele estivesse a transmitir ao vivo.

Mas em vez de utilizar um simples sinal escrito, eu queria criar algo que se ligasse quando a mochila do Robin Good estivesse a transmitir. Decidi então criar um sinal luminoso com um pouco de Plexiglas e LEDs. Nada de especial, pois era algo fácil de construir desta forma e divertia-me muito ao experimentar todos estes materiais que não conhecia.

Para começar cortei um pedaço de Plexiglas (vidro acrílico) e pintei nele as letras do sinal (Robin Good TV - On Net) utilizando tinta. Isto na realidade foi criado utilizando látex líquido que seca muito depressa e que pode ser facilmente removido com os dedos.

RobinPad25-300.jpg
Figura: a escrita com o líquido de pintura

Pintei então toda a face frontal com tinta preta e, depois de a tinta ter secado, removi a máscara.

RobinPad26-250.jpg
Figura: a escrita como o líquido de pintura

O último passo foi marcar no sinal o lugar onde deveriam ser mostrados os LEDs que soldei na traseira.

RobinPad27-200.jpg
Figura: a escrita com o líquido de pintura.

Trabalho completo!

RobinPad28-350.jpg
Figura: Robin Good vestindo a nossa "criatura"





6. Como tudo funciona


Robin-pad-IMG_0055.JPG

Na parte de "acção" no painel de controlo remoto, o RobinPad corre uma excelente ferramenta de scripting chamada Autohotkey. Com ela pode processar o input do utilizador e executar algumas acções, como clicar num sítio do ecrã. Isto é essencial porque estamos a utilizar um sítio Web de transmissão de vídeo para transmitir (geralmente é o Ustream) que por sua vez exige que um codificador em Flash seja executado no browser para correr. Devido a esta configuração, não podemos mudar para um sistema de codificação personalizado, mas estou confiante que mais cedo ou mais tarde iremos mudar para este tipo de configuração.

A ideia inicial para o comando de botões é de utilizar a fila de botões superior para funções e frequentemente utilizadas, deixando a fila inferior para funções gerais. Na fila inferior, os botões mudam as suas funções contextualmente e podem desempenhar várias tarefas. Desta forma podemos utilizar mais funções do que o número de botões que temos fisicamente disponíveis (10).

Os botões importantes da fila superior desempenham estas funções básicas (da esquerda para a direita):

Menu

  • Iniciar streaming


  • Bloquear/desbloquear os botões (para evitar pressões acidentais)


  • Iniciar gravação


  • Parar gravação

Os da fila inferior desempenham as funções mostradas nos seguintes ecrãs do menu e podem ser alternadas ao pressionar o botão de "Menu".

A primeira imagem mostrada em baixo é a Menu1 e a segunda e terceira imagens são a Menu2.

RobinPad29.gif
Figura: Menu1, Menu2HSDPA e Menu2Wireless do RobinPad

Mais tarde adicionei um "splash screen" que é mostrado quando o sistema se inicia e também um aviso de "bloqueado" que é mostrado quando o comando é bloqueado (através do botão central superior). Obviamente também adicionei uma mensagem "desbloqueado" que é mostrada quando o botão superior central é pressionado outra vez.

RobinPad30.gif
Figura: Os avisos e o splash screen do RobinPad

Para verificar todas as funções dentro do monitor do painel de controlo remoto, concebemos formas nas quais o Robin pode ver os controlos e indicadores de feedback, incluindo o seu feedback de vídeo, à medida que são mostrados pelo Ustream, repetidos numa resolução menor no seu monitor mais pequeno. Ao lado dos controlos de feedback de transmissão, adicionei uma aplicação de controlo chamada Sysmetrix, que dá ainda mais controlo ao Robin através de indicações numéricas do tempo restante de bateria, temperatura do processador e largura de banda in e out.





7. E a seguir?


Eu e o Robin sabemos que existem imensas melhorias que podemos fazer nesta configuração. Mas isto é o melhor de criar algo por si mesmo.

Começando pela fiabilidade de toda a configuração física que ainda não é à prova de falhas, e pela necessidade de ajustar o nosso software de controlo, pois o Ustream continuamente altera e melhora a sua interface. Na realidade, o melhor seria criar um software dedicado para este sistema.

Mas deixe-me tentar resumir aqui todas as melhorias em que já pensámos e para onde queremos levar este projecto.

De um ponto de vista de hardware, seria bom:

  • Criar outra base de suporte para o monitor e ou comando de botões sem o "braço de suporte". Desta forma o Robin pode decidir entre utilizar o braço de suporte ou guardar o painel de controlo remoto dentro do casaco sem utilizar o braço de suporte flexível. Quando ele precisar, pode tirar uma mão do bolso e usá-la. Sim, isto merece uma mão.
  • colocar um pouco de Velcro no painel de controlo remoto e na fivela da mochila para que o painel de controlo remoto possa ser preso ao próprio cinto

  • adicionar suporte para um conjunto de auriculares para que o Robin possa ter um canal de feedback em áudio que possa utilizar para falar com a audiência ou receber indicações de uma possível sala de controlo através de uma ligação VOIP como o Skype.

  • pensamos numa motherboard mini ITX e evoluir todo o sistema para uma estação de transmissão móvel isolada (wow)



Do ponto de vista de software seria bom:

  • encontrar um software que seja capaz de reproduzir um ficheiro em mp3 "para a" entrada do microfone para que alguma música de fundo seja transmitida com o vídeo (o sítio Web de transmissão apenas aceita áudio de uma só fonte de cada vez)

  • Tentar abandonar o sítio Web de transmissão ou evitar ter que utilizar um browser e codificador Flash. Logo que este objectivo seja atingido iremos voltar-nos para um sistema Linux mais fiável (e para não termos que modificar o software para redefinir os cliques do rato sempre que o sítio Web de transmissão altere o codificador Flash)

  • tentar escrever a aplicação para Linux tentando manter a todas as funcionalidades que agora temos.
  • Manter todo o sistema de software o mais modular possível Sendo o objectivo final a criação de uma configuração onde o Robin possa transmitir directamente a partir do RobinPad ( sim, adicionando-lhe funções de captura de vídeo) ou de onde possa transmitir para a uma sala de controlo principal onde o seu sinal seja misturado com o de outros repórteres que transmitem de outras localizações ou com o vídeo de alguém que queira interagir a partir de casa.

É o fim da história por agora.

Estamos sempre a trabalhar para fazer novos progressos ao RobinPad e se seguir o RobinGood.TV poderá ver o Robin em acção dentro de pouco tempo.

N.B.:

Para além do nosso desejo de mostrar como tudo isto foi feito, os seus comentários e sugestões são o que o Robin e eu mais valorizamos. Se tem ideias, críticas, não hesite e faça-se ouvir em baixo na secção de comentários.

Fabio Di Niro -
 
Comentários dos leitores    
blog comments powered by Disqus

 

 


 

Feed RSS de Notícias Diárias

 

 

Curated by

Publisher MasterNewMedia.org - New media explorer - Communication designer

 

 


Real Time Web Analytics